package vip.youngboy.freejump.persist.bus.busdata;

import com.alibaba.fastjson.JSONObject;
import vip.youngboy.freejump.constant.BusDataPersistType;
import vip.youngboy.freejump.domain.bus.BusObj;
import vip.youngboy.freejump.domain.bus.BusinessData;

public interface BusDataPersistence {

    /**
     * 持久化类型
     *
     * @return 可以持久化到流程变量中也可以持久化到数据库中
     */
    BusDataPersistType supportType();

    /**
     * 持久化业务数据
     *
     * @param businessData
     */
    void persistData(BusinessData businessData);

    /**
     * 根据业务对象从数据库加载业务对象
     *
     * @param busObj 业务对象
     * @param id     业务id
     * @return 业务对象
     */
    BusinessData loadData(BusObj busObj, Object id);

    /**
     * 删除业务数据
     *
     * @param busObj 业务对象
     * @param id     对象id
     */
    void removeData(BusObj busObj, Object id);


}
